Unity (игровой движок)

Эта статья находится на начальном уровне проработки, в одной из её версий выборочно используется текст из источника, распространяемого под свободной лицензией
Материал из энциклопедии Руниверсалис
Unity
Тип игровой движок, интегрированная среда разработки, конструктор, фреймворк
Разработчик Unity Technologies
Написана на C++ (Runtime), C#
Первый выпуск 8 июня 2005 года
Аппаратная платформа ПК
PlayStation 4
PlayStation 5
Xbox One
Xbox Series X
Apple TV
Состояние активное

Unity (unity в переводе с англ. — «единство», произносится как «ю́нити») — межплатформенная среда разработки компьютерных игр[1], разработанная американской компанией Unity Technologies. Unity позволяет создавать приложения, работающие на более чем 25 различных платформах, включающих персональные компьютеры, игровые консоли, мобильные устройства, интернет-приложения и другие[2]. Выпуск Unity состоялся в 2005 году и с того времени идёт постоянное развитие.

Основными преимуществами Unity являются наличие визуальной среды разработки, межплатформенной поддержки и модульной системы компонентов. К недостаткам относят появление сложностей при работе с многокомпонентными схемами и затруднения при подключении внешних библиотек[⇨].

На Unity написаны тысячи игр, приложений, визуализации математических моделей, которые охватывают множество платформ и жанров. При этом Unity используется как крупными разработчиками, так и независимыми студиями[⇨].

Возможности

Редактор Unity имеет простой Drag&Drop интерфейс, а также установкой плагинов KALI который легко настраивать, состоящий из различных окон, благодаря чему можно производить отладку игры прямо в редакторе. Движок использует для написания скриптов C#[3]. Ранее поддерживались также Boo (диалект Python, поддержку убрали в 5-й версии) и модификация JavaScript, известная как UnityScript (поддержка прекращена в версии 2017.1). Расчёты физики производит физический движок PhysX от NVIDIA для 3D физики и Box2D для 2D физики[4]. Графический API — DirectX (на данный момент DX 11, поддерживается DX 12)

Проект в Unity делится на сцены (уровни) — отдельные файлы, содержащие свои игровые миры со своим набором объектов, сценариев, и настроек. Сцены могут содержать в себе как, собственно, объекты (модели), так и пустые игровые объекты — объекты, которые не имеют модели («пустышки»)[5]. Объекты, в свою очередь содержат наборы компонентов, с которыми и взаимодействуют скрипты. Также у объектов есть название (в Unity допускается наличие двух и более объектов с одинаковыми названиями в одной сцене), может быть тег (метка) и слой, на котором он должен отображаться. Так, у любого объекта на сцене обязательно присутствует компонент Transform — он хранит в себе координаты местоположения, поворота и размеров объекта по всем трём осям.

Также Unity поддерживает физику твёрдых тел и ткани, а также физику типа Ragdoll (тряпичная кукла).

В редакторе имеется система наследования объектов; дочерние объекты будут повторять все изменения позиции, поворота и масштаба родительского объекта.

Скрипты в редакторе прикрепляются к объектам в виде отдельных компонентов.

При импорте текстуры в Unity можно сгенерировать alpha-канал, mip-уровни, normal-map, light-map, карту отражений, однако непосредственно на модель текстуру прикрепить нельзя — будет создан материал, которому будет назначен шейдер, и затем материал прикрепится к модели. Редактор Unity поддерживает написание и редактирование шейдеров. Редактор Unity имеет компонент для создания анимации, но также анимацию можно создать предварительно в 3D-редакторе и импортировать вместе с моделью, а затем разбить на файлы.

Unity 3D поддерживает систему Level Of Detail (сокр. LOD), суть которой заключается в том, что на дальнем расстоянии от игрока высокодетализированные модели заменяются на менее детализированные, и наоборот, а также систему Occlusion culling, суть которой в том, что у объектов, не попадающих в поле зрения камеры не визуализируется геометрия и коллизия, что снижает нагрузку на центральный процессор и позволяет оптимизировать проект. При компиляции проекта создаётся исполняемый (.exe) файл игры (для Windows), а в отдельной папке — данные игры (включая все игровые уровни и динамически подключаемые библиотеки).

Движок поддерживает множество популярных форматов. Модели, звуки, текстуры, материалы, скрипты можно запаковывать в формат .unitypackage и передавать другим разработчикам, или выкладывать в свободный доступ. Этот же формат используется во внутреннем магазине Unity Asset Store, в котором разработчики могут бесплатно и за деньги выкладывать в общий доступ различные элементы, нужные при создании игр. Чтобы использовать Unity Asset Store, необходимо иметь аккаунт разработчика Unity.

UNet (библиотека для реализации мультиплеера в играх на Unity) была удалёна, начиная с версии 2018.4; решение «из коробки» для мультиплеера отсутствует. Также можно использовать подходящий пользователю способ контроля версий. К примеру, Tortoise SVN, Git или Source Gear.

В Unity входит Unity Asset Server — инструментарий для совместной разработки на базе Unity, являющийся дополнением, добавляющим контроль версий и ряд других серверных решений.

Достоинства и недостатки

Как правило, игровой движок предоставляет множество функциональных возможностей, позволяющих их задействовать в различных играх, в которые входят моделирование физических сред, карты нормалей, динамические тени и многое другое. В отличие от многих игровых движков, у Unity имеется два основных преимущества: наличие визуальной среды разработки и межплатформенная поддержка[6]. Первый фактор включает не только инструментарий визуального моделирования, но и интегрированную среду, цепочку сборки, что направлено на повышение производительности разработчиков, в частности, этапов создания прототипов и тестирования. Под межплатформенной поддержкой предоставляется не только места развёртывания (установка на персональном компьютере, на мобильном устройстве, консоли и т. д.), но и наличие инструментария разработки (интегрированная среда может использоваться под Windows и Mac OS)[2].

Третьим преимуществом называется модульная система компонентов Unity, с помощью которой происходит конструирование игровых объектов, когда последние представляют собой комбинируемые пакеты функциональных элементов. В отличие от механизмов наследования, объекты в Unity создаются посредством объединения функциональных блоков, а не помещения в узлы дерева наследования. Такой подход облегчает создание прототипов, что актуально при разработке игр[7].

В качестве недостатков приводятся ограничение визуального редактора при работе с многокомпонентными схемами, когда в сложных сценах визуальная работа затрудняется. Вторым недостатком называется отсутствие поддержки Unity ссылок на внешние библиотеки, работу с которыми программистам приходится настраивать самостоятельно, и это также затрудняет командную работу. Ещё один недостаток связан с использованием шаблонов экземпляров (англ. prefabs). С одной стороны, эта концепция Unity предлагает гибкий подход визуального редактирования объектов, но с другой стороны, редактирование таких шаблонов является сложным[7]. Также, WebGL-версия движка, в силу специфики своей архитектуры (трансляция кода из C# в С++ и далее в JavaScript), имеет ряд нерешённых проблем с производительностью, потреблением памяти и работоспособностью на мобильных устройствах[8][9].

Игры на Unity

Gone Home — Unity

На Unity написаны сотни игр, приложений и симуляций[10], Unity используется как крупными разработчиками (например, Blizzard[11]), так и в создании инди-игр. Компьютерные игры на Unity охватывают множество платформ и жанров, характерными примерами которых являются[12]:

История

Первая версия Unity появилась в 2005 году, когда игровой движок был анонсирован на Worldwide Developers Conference. Изначально Unity предназначался исключительно для компьютеров Mac, а в августе вышло обновление, позволяющее работать под Windows. В следующих версиях постепенно добавлялись новые платформы и развёртывания: межплатформенный веб-плеер в 2006-м, iPhone в 2008-м, Android в 2010-м, и далее на игровых консолях Xbox и Playstation[2].

Есть возможность создавать приложения для запуска в браузерах с помощью специального подключаемого модуля Unity (Unity Web Player), а также с помощью реализации технологии WebGL. Ранее была экспериментальная поддержка реализации проектов в рамках модуля Adobe Flash Player[13], но позже команда разработчиков Unity приняла сложное решение по отказу[14] от этого.

В декабре 2009 года Gamasutra назвал Unity одним из самых значительных участников на рынке игровых компаний[15].

Лицензии

Бесплатная версия Unity имеет некоторые ограничения, но для неё есть возможность распространять игры при условии, что ежегодный доход с игры не превышает 100 000 долларов[16].

Тип лицензии Доход компании в год Экран приветствия Многопользовательские функции Сборка в облачном хранилище Тёмная тема Отчёты по производительности Премиум поддержка Доступ к исходному коду Цена (в долларах)
Personal До 100 000 долларов «Made With Unity» и необязательная пользовательская анимация 20 CCUs Стандартная Да Нет Нет Нет Бесплатно
Plus До 200 000 долларов Пользовательская анимация и/или «Made With Unity» 50 CCUs Приоритетная Да Да Нет Нет 399 в год или 40 ежемесячно
Pro Неограничен Пользовательская анимация и/или «Made With Unity» 200 CCUs Одновременная Да Да Да Нет 1800 в год или 150 ежемесячно
Enterprise Неограничен Пользовательская анимация и/или «Made With Unity» Пользовательский мультиплеер Выделенные ресурсы Да Да Да Да 200$ в месяц

Примечания

  1. Хокинг, 2016, p. 16.
  2. 2,0 2,1 2,2 Хокинг, 2016, p. 22.
  3. Unity Technologies. Unity - Manual: Unity architecture (англ.). docs.unity3d.com. Дата обращения: 13 мая 2022. Архивировано 13 мая 2022 года.
  4. Unity Technologies. Unity - Manual: Physics (англ.). docs.unity3d.com. Дата обращения: 13 мая 2022. Архивировано 13 мая 2022 года.
  5. Unity Technologies. Unity - Manual: Scenes (англ.). docs.unity3d.com. Дата обращения: 13 мая 2022. Архивировано 18 апреля 2022 года.
  6. Хокинг, 2016, p. 21.
  7. 7,0 7,1 Хокинг, 2016, p. 23.
  8. Memory Considerations when targeting WebGL. Дата обращения: 24 августа 2018. Архивировано 24 августа 2018 года.
  9. Verge3D versus Unity WebGL - Pipeline and Performance. Дата обращения: 24 августа 2018. Архивировано 24 августа 2018 года.
  10. Хокинг, 2016, p. 24—26.
  11. Even Hearthstone runs on Unity — and that’s why it’s already on iPad. Дата обращения: 29 сентября 2017. Архивировано 5 ноября 2017 года.
  12. Хокинг, 2016, p. 25-.
  13. Dean Takahashi. Unity Technologies developers will be able to publish 3D games via Adobe Flash (англ.). VentureBeat (21 декабря 2011). Дата обращения: 11 марта 2012. Архивировано 9 июня 2012 года.
  14. David Helgason. Sunsetting Flash (англ.). The Unity Blog (23 апреля 2013). Дата обращения: 9 декабря 2014. Архивировано 29 ноября 2014 года.
  15. Christian Nutt. Gamasutra's Best Of 2009: Top 5 Game Companies (англ.). Gamasutra. — «Unity has become a major player in the market as of 2009, and there's more to come». Дата обращения: 11 марта 2012. Архивировано 9 июня 2012 года.
  16. Unity Software License Agreement 4.x. Дата обращения: 6 марта 2014. Архивировано 7 марта 2014 года.

Литература

Ссылки

  • — официальный сайт Unity